package com.example.concurrency.thread02;

/**
 * @description:
 * @program: demos
 * @author: dove
 * @date: 2020-12-03 23:37
 * 将Runnable接口理解为一个策略接口，在策略接口里定义了一个策略行为：run()
 * 该类是一个具体策略类
 * 有资源抢夺情况，非线程安全的
 **/

public class CounterWindowRunnable implements Runnable{

    // 最多50个号
    private static final int MAX = 50;

    // 起始号，不用static修饰
    private int index = 1;

    @Override
    public void run() {
        while (index <= MAX){
            System.out.format("请[%d]号到[%s]办理业务\n",index++,Thread.currentThread().getName());
        }
    }

    public static void main(String[] args) {
        // 具体策略类，策略模式可以有多种策略。CounterWindowRunnable扮演了其中一种策略。
        final CounterWindowRunnable runnable = new CounterWindowRunnable();
        // 相当于traveler的角色。Runnable接口定义的run行为的具体执行者
        new Thread(runnable,"一号窗口").start();
        new Thread(runnable,"二号窗口").start();
        new Thread(runnable,"三号窗口").start();
        new Thread(runnable,"四号窗口").start();
    }

}
